package net.gdface.facelog.decorator;
import java.nio.ByteBuffer;
import java.util.List;
import java.util.Map;
import net.gdface.facelog.IFaceLog;
import net.gdface.facelog.MQParam;
import net.gdface.facelog.db.DeviceBean;
import net.gdface.facelog.db.DeviceGroupBean;
import net.gdface.facelog.db.FaceBean;
import net.gdface.facelog.db.FeatureBean;
import net.gdface.facelog.db.ImageBean;
import net.gdface.facelog.db.LogBean;
import net.gdface.facelog.db.LogLightBean;
import net.gdface.facelog.db.PermitBean;
import net.gdface.facelog.db.PersonBean;
import net.gdface.facelog.db.PersonGroupBean;
import net.gdface.thrift.TypeTransformer;
import net.gdface.thrift.exception.ServiceRuntimeException;
import com.facebook.swift.service.ThriftException;
import com.facebook.swift.service.ThriftService;
import com.facebook.swift.service.ThriftMethod;
/**
 * decorator pattern 装饰者模式代理{@link IFaceLog}接口<br>
 * 将{@link IFaceLog}实例封装为一个thrift服务<br>
 * 转发所有服务请求到{@link #delegate()}指定的实例<br>
 * 计算机生成代码(generated by automated tools ThriftServiceDecoratorGenerator @author guyadong)<br>
 * @author guyadong
 *
 */
@ThriftService("IFaceLog")
public class IFaceLogThriftDecorator {
    private final IFaceLog delegate;
    
    public IFaceLogThriftDecorator(IFaceLog delegate) {
        super();
        if(null == delegate){
            throw new NullPointerException("delegate is null");
        }
        this.delegate = delegate;
    }

    /**
     * 返回被装饰的{@link IFaceLog}实例
     * @return
     */
    public IFaceLog delegate() {
        return delegate;
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#addFeature(byte[],java.lang.String,java.lang.Integer,boolean,byte[],net.gdface.facelog.db.FaceBean,net.gdface.facelog.Token)}
     */
    @ThriftMethod(value = "addFeatureWithImage" ,exception = {
                @ThriftException(type=DuplicateRecordException.class, id=1),
                @ThriftException(type=ServiceRuntimeException.class, id=2)
                })
    public FeatureBean addFeatureWithImage(ByteBuffer feature,
        String featureVersion,
        Integer personId,
        boolean asIdPhotoIfAbsent,
        ByteBuffer featurePhoto,
        FaceBean faceBean,
        Token token) 
        throws DuplicateRecordException,ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().addFeature(TypeTransformer.getInstance().to(
                    feature,
                    ByteBuffer.class,
                    byte[].class),
                featureVersion,
                personId,
                asIdPhotoIfAbsent,
                TypeTransformer.getInstance().to(
                    featurePhoto,
                    ByteBuffer.class,
                    byte[].class),
                TypeTransformer.getInstance().to(
                    faceBean,
                    FaceBean.class,
                    FaceBean.class),
                TypeTransformer.getInstance().to(
                    token,
                    Token.class,
                    net.gdface.facelog.Token.class)),
                    FeatureBean.class,
                    FeatureBean.class);
        }
        catch(net.gdface.facelog.DuplicateRecordException e){
            throw new DuplicateRecordException(e);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#addFeature(byte[],java.lang.String,java.lang.Integer,java.util.List,net.gdface.facelog.Token)}
     */
    @ThriftMethod(value = "addFeature" ,exception = {
                @ThriftException(type=DuplicateRecordException.class, id=1),
                @ThriftException(type=ServiceRuntimeException.class, id=2)
                })
    public FeatureBean addFeature(ByteBuffer feature,
        String featureVersion,
        Integer personId,
        List<FaceBean> faecBeans,
        Token token) 
        throws DuplicateRecordException,ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().addFeature(TypeTransformer.getInstance().to(
                    feature,
                    ByteBuffer.class,
                    byte[].class),
                featureVersion,
                personId,
                TypeTransformer.getInstance().to(
                    faecBeans,
                    FaceBean.class,
                    FaceBean.class),
                TypeTransformer.getInstance().to(
                    token,
                    Token.class,
                    net.gdface.facelog.Token.class)),
                    FeatureBean.class,
                    FeatureBean.class);
        }
        catch(net.gdface.facelog.DuplicateRecordException e){
            throw new DuplicateRecordException(e);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#addFeature(byte[],java.lang.String,java.lang.Integer,java.util.Map,net.gdface.facelog.Token)}
     */
    @ThriftMethod(value = "addFeatureMulti" ,exception = {
                @ThriftException(type=DuplicateRecordException.class, id=1),
                @ThriftException(type=ServiceRuntimeException.class, id=2)
                })
    public FeatureBean addFeatureMulti(ByteBuffer feature,
        String featureVersion,
        Integer personId,
        Map<ByteBuffer,FaceBean> faceInfo,
        Token token) 
        throws DuplicateRecordException,ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().addFeature(TypeTransformer.getInstance().to(
                    feature,
                    ByteBuffer.class,
                    byte[].class),
                featureVersion,
                personId,
                TypeTransformer.getInstance().to(
                    faceInfo,
                    ByteBuffer.class,
                    FaceBean.class,
                    ByteBuffer.class,
                    FaceBean.class),
                TypeTransformer.getInstance().to(
                    token,
                    Token.class,
                    net.gdface.facelog.Token.class)),
                    FeatureBean.class,
                    FeatureBean.class);
        }
        catch(net.gdface.facelog.DuplicateRecordException e){
            throw new DuplicateRecordException(e);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#addImage(byte[],java.lang.Integer,net.gdface.facelog.db.FaceBean,java.lang.Integer,net.gdface.facelog.Token)}
     */
    @ThriftMethod(value = "addImage" ,exception = {
                @ThriftException(type=DuplicateRecordException.class, id=1),
                @ThriftException(type=ServiceRuntimeException.class, id=2)
                })
    public ImageBean addImage(ByteBuffer imageData,
        Integer deviceId,
        FaceBean faceBean,
        Integer personId,
        Token token) 
        throws DuplicateRecordException,ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().addImage(TypeTransformer.getInstance().to(
                    imageData,
                    ByteBuffer.class,
                    byte[].class),
                deviceId,
                TypeTransformer.getInstance().to(
                    faceBean,
                    FaceBean.class,
                    FaceBean.class),
                personId,
                TypeTransformer.getInstance().to(
                    token,
                    Token.class,
                    net.gdface.facelog.Token.class)),
                    ImageBean.class,
                    ImageBean.class);
        }
        catch(net.gdface.facelog.DuplicateRecordException e){
            throw new DuplicateRecordException(e);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#addLog(net.gdface.facelog.db.LogBean,net.gdface.facelog.Token)}
     */
    @ThriftMethod(value = "addLog" ,exception = {
                @ThriftException(type=DuplicateRecordException.class, id=1),
                @ThriftException(type=ServiceRuntimeException.class, id=2)
                })
    public void addLog(LogBean logBean,
        Token token) 
        throws DuplicateRecordException,ServiceRuntimeException{
        try{
             delegate().addLog(TypeTransformer.getInstance().to(
                    logBean,
                    LogBean.class,
                    LogBean.class),
                TypeTransformer.getInstance().to(
                    token,
                    Token.class,
                    net.gdface.facelog.Token.class));
        }
        catch(net.gdface.facelog.DuplicateRecordException e){
            throw new DuplicateRecordException(e);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#addLog(net.gdface.facelog.db.LogBean,net.gdface.facelog.db.FaceBean,byte[],net.gdface.facelog.Token)}
     */
    @ThriftMethod(value = "addLogFull" ,exception = {
                @ThriftException(type=DuplicateRecordException.class, id=1),
                @ThriftException(type=ServiceRuntimeException.class, id=2)
                })
    public void addLogFull(LogBean logBean,
        FaceBean faceBean,
        ByteBuffer featureImage,
        Token token) 
        throws DuplicateRecordException,ServiceRuntimeException{
        try{
             delegate().addLog(TypeTransformer.getInstance().to(
                    logBean,
                    LogBean.class,
                    LogBean.class),
                TypeTransformer.getInstance().to(
                    faceBean,
                    FaceBean.class,
                    FaceBean.class),
                TypeTransformer.getInstance().to(
                    featureImage,
                    ByteBuffer.class,
                    byte[].class),
                TypeTransformer.getInstance().to(
                    token,
                    Token.class,
                    net.gdface.facelog.Token.class));
        }
        catch(net.gdface.facelog.DuplicateRecordException e){
            throw new DuplicateRecordException(e);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#addLogs(java.util.List,java.util.List,java.util.List,net.gdface.facelog.Token)}
     */
    @ThriftMethod(value = "addLogsFull" ,exception = {
                @ThriftException(type=DuplicateRecordException.class, id=1),
                @ThriftException(type=ServiceRuntimeException.class, id=2)
                })
    public void addLogsFull(List<LogBean> logBeans,
        List<FaceBean> faceBeans,
        List<ByteBuffer> featureImages,
        Token token) 
        throws DuplicateRecordException,ServiceRuntimeException{
        try{
             delegate().addLogs(TypeTransformer.getInstance().to(
                    logBeans,
                    LogBean.class,
                    LogBean.class),
                TypeTransformer.getInstance().to(
                    faceBeans,
                    FaceBean.class,
                    FaceBean.class),
                TypeTransformer.getInstance().to(
                    featureImages,
                    ByteBuffer.class,
                    byte[].class),
                TypeTransformer.getInstance().to(
                    token,
                    Token.class,
                    net.gdface.facelog.Token.class));
        }
        catch(net.gdface.facelog.DuplicateRecordException e){
            throw new DuplicateRecordException(e);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#addLogs(java.util.List,net.gdface.facelog.Token)}
     */
    @ThriftMethod(value = "addLogs" ,exception = {
                @ThriftException(type=DuplicateRecordException.class, id=1),
                @ThriftException(type=ServiceRuntimeException.class, id=2)
                })
    public void addLogs(List<LogBean> beans,
        Token token) 
        throws DuplicateRecordException,ServiceRuntimeException{
        try{
             delegate().addLogs(TypeTransformer.getInstance().to(
                    beans,
                    LogBean.class,
                    LogBean.class),
                TypeTransformer.getInstance().to(
                    token,
                    Token.class,
                    net.gdface.facelog.Token.class));
        }
        catch(net.gdface.facelog.DuplicateRecordException e){
            throw new DuplicateRecordException(e);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#addPermit(int,int,net.gdface.facelog.Token)}
     */
    @ThriftMethod(value = "addPermitById" )
    public void addPermitById(int deviceGroupId,
        int personGroupId,
        Token token) 
        throws ServiceRuntimeException{
        try{
             delegate().addPermit(deviceGroupId,
                personGroupId,
                TypeTransformer.getInstance().to(
                    token,
                    Token.class,
                    net.gdface.facelog.Token.class));
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#addPermit(net.gdface.facelog.db.DeviceGroupBean,net.gdface.facelog.db.PersonGroupBean,net.gdface.facelog.Token)}
     */
    @ThriftMethod(value = "addPermit" )
    public void addPermit(DeviceGroupBean deviceGroup,
        PersonGroupBean personGroup,
        Token token) 
        throws ServiceRuntimeException{
        try{
             delegate().addPermit(TypeTransformer.getInstance().to(
                    deviceGroup,
                    DeviceGroupBean.class,
                    DeviceGroupBean.class),
                TypeTransformer.getInstance().to(
                    personGroup,
                    PersonGroupBean.class,
                    PersonGroupBean.class),
                TypeTransformer.getInstance().to(
                    token,
                    Token.class,
                    net.gdface.facelog.Token.class));
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#applyAckChannel(net.gdface.facelog.Token)}
     */
    @ThriftMethod(value = "applyAckChannel" )
    public String applyAckChannel(Token token) 
        throws ServiceRuntimeException{
        try{
            return delegate().applyAckChannel(TypeTransformer.getInstance().to(
                    token,
                    Token.class,
                    net.gdface.facelog.Token.class));
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#applyAckChannel(net.gdface.facelog.Token,long)}
     */
    @ThriftMethod(value = "applyAckChannelWithDuration" )
    public String applyAckChannelWithDuration(Token token,
        long duration) 
        throws ServiceRuntimeException{
        try{
            return delegate().applyAckChannel(TypeTransformer.getInstance().to(
                    token,
                    Token.class,
                    net.gdface.facelog.Token.class),
                duration);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#applyCmdSn(net.gdface.facelog.Token)}
     */
    @ThriftMethod(value = "applyCmdSn" )
    public long applyCmdSn(Token token) 
        throws ServiceRuntimeException{
        try{
            return delegate().applyCmdSn(TypeTransformer.getInstance().to(
                    token,
                    Token.class,
                    net.gdface.facelog.Token.class));
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#applyPersonToken(int,java.lang.String,boolean)}
     */
    @ThriftMethod(value = "applyPersonToken" ,exception = {
                @ThriftException(type=ServiceSecurityException.class, id=1),
                @ThriftException(type=ServiceRuntimeException.class, id=2)
                })
    public Token applyPersonToken(int personId,
        String password,
        boolean isMd5) 
        throws ServiceSecurityException,ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().applyPersonToken(personId,
                password,
                isMd5),
                    net.gdface.facelog.Token.class,
                    Token.class);
        }
        catch(net.gdface.facelog.ServiceSecurityException e){
            throw new ServiceSecurityException(e);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#applyRootToken(java.lang.String,boolean)}
     */
    @ThriftMethod(value = "applyRootToken" ,exception = {
                @ThriftException(type=ServiceSecurityException.class, id=1),
                @ThriftException(type=ServiceRuntimeException.class, id=2)
                })
    public Token applyRootToken(String password,
        boolean isMd5) 
        throws ServiceSecurityException,ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().applyRootToken(password,
                isMd5),
                    net.gdface.facelog.Token.class,
                    Token.class);
        }
        catch(net.gdface.facelog.ServiceSecurityException e){
            throw new ServiceSecurityException(e);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#applyUserToken(int,java.lang.String,boolean)}
     */
    @ThriftMethod(value = "applyUserToken" ,exception = {
                @ThriftException(type=ServiceSecurityException.class, id=1),
                @ThriftException(type=ServiceRuntimeException.class, id=2)
                })
    public Token applyUserToken(int userid,
        String password,
        boolean isMd5) 
        throws ServiceSecurityException,ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().applyUserToken(userid,
                password,
                isMd5),
                    net.gdface.facelog.Token.class,
                    Token.class);
        }
        catch(net.gdface.facelog.ServiceSecurityException e){
            throw new ServiceSecurityException(e);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#bindBorder(java.lang.Integer,java.lang.Integer,net.gdface.facelog.Token)}
     */
    @ThriftMethod(value = "bindBorder" )
    public void bindBorder(Integer personGroupId,
        Integer deviceGroupId,
        Token token) 
        throws ServiceRuntimeException{
        try{
             delegate().bindBorder(personGroupId,
                deviceGroupId,
                TypeTransformer.getInstance().to(
                    token,
                    Token.class,
                    net.gdface.facelog.Token.class));
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#childListForDeviceGroup(int)}
     */
    @ThriftMethod(value = "childListForDeviceGroup" )
    public List<Integer> childListForDeviceGroup(int deviceGroupId) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().childListForDeviceGroup(deviceGroupId),
                    Integer.class,
                    Integer.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#childListForPersonGroup(int)}
     */
    @ThriftMethod(value = "childListForPersonGroup" )
    public List<Integer> childListForPersonGroup(int personGroupId) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().childListForPersonGroup(personGroupId),
                    Integer.class,
                    Integer.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#countDeviceByWhere(java.lang.String)}
     */
    @ThriftMethod(value = "countDeviceByWhere" )
    public int countDeviceByWhere(String where) 
        throws ServiceRuntimeException{
        try{
            return delegate().countDeviceByWhere(where);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#countDeviceGroupByWhere(java.lang.String)}
     */
    @ThriftMethod(value = "countDeviceGroupByWhere" )
    public int countDeviceGroupByWhere(String where) 
        throws ServiceRuntimeException{
        try{
            return delegate().countDeviceGroupByWhere(where);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#countLogByWhere(java.lang.String)}
     */
    @ThriftMethod(value = "countLogByWhere" )
    public int countLogByWhere(String where) 
        throws ServiceRuntimeException{
        try{
            return delegate().countLogByWhere(where);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#countLogLightByVerifyTime(java.lang.String)}
     */
    @ThriftMethod(value = "countLogLightByVerifyTimeTimestr" )
    public int countLogLightByVerifyTimeTimestr(String timestamp) 
        throws ServiceRuntimeException{
        try{
            return delegate().countLogLightByVerifyTime(timestamp);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#countLogLightByVerifyTime(long)}
     */
    @ThriftMethod(value = "countLogLightByVerifyTime" )
    public int countLogLightByVerifyTime(long timestamp) 
        throws ServiceRuntimeException{
        try{
            return delegate().countLogLightByVerifyTime(timestamp);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#countLogLightByWhere(java.lang.String)}
     */
    @ThriftMethod(value = "countLogLightByWhere" )
    public int countLogLightByWhere(String where) 
        throws ServiceRuntimeException{
        try{
            return delegate().countLogLightByWhere(where);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#countPersonByWhere(java.lang.String)}
     */
    @ThriftMethod(value = "countPersonByWhere" )
    public int countPersonByWhere(String where) 
        throws ServiceRuntimeException{
        try{
            return delegate().countPersonByWhere(where);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#countPersonGroupByWhere(java.lang.String)}
     */
    @ThriftMethod(value = "countPersonGroupByWhere" )
    public int countPersonGroupByWhere(String where) 
        throws ServiceRuntimeException{
        try{
            return delegate().countPersonGroupByWhere(where);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#deleteAllFeaturesByPersonId(int,boolean,net.gdface.facelog.Token)}
     */
    @ThriftMethod(value = "deleteAllFeaturesByPersonId" )
    public int deleteAllFeaturesByPersonId(int personId,
        boolean deleteImage,
        Token token) 
        throws ServiceRuntimeException{
        try{
            return delegate().deleteAllFeaturesByPersonId(personId,
                deleteImage,
                TypeTransformer.getInstance().to(
                    token,
                    Token.class,
                    net.gdface.facelog.Token.class));
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#deleteDeviceGroup(int,net.gdface.facelog.Token)}
     */
    @ThriftMethod(value = "deleteDeviceGroup" )
    public int deleteDeviceGroup(int deviceGroupId,
        Token token) 
        throws ServiceRuntimeException{
        try{
            return delegate().deleteDeviceGroup(deviceGroupId,
                TypeTransformer.getInstance().to(
                    token,
                    Token.class,
                    net.gdface.facelog.Token.class));
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#deleteFeature(java.lang.String,boolean,net.gdface.facelog.Token)}
     */
    @ThriftMethod(value = "deleteFeature" )
    public List<String> deleteFeature(String featureMd5,
        boolean deleteImage,
        Token token) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().deleteFeature(featureMd5,
                deleteImage,
                TypeTransformer.getInstance().to(
                    token,
                    Token.class,
                    net.gdface.facelog.Token.class)),
                    String.class,
                    String.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#deleteGroupPermitOnDeviceGroup(int,net.gdface.facelog.Token)}
     */
    @ThriftMethod(value = "deleteGroupPermitOnDeviceGroup" )
    public int deleteGroupPermitOnDeviceGroup(int deviceGroupId,
        Token token) 
        throws ServiceRuntimeException{
        try{
            return delegate().deleteGroupPermitOnDeviceGroup(deviceGroupId,
                TypeTransformer.getInstance().to(
                    token,
                    Token.class,
                    net.gdface.facelog.Token.class));
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#deleteImage(java.lang.String,net.gdface.facelog.Token)}
     */
    @ThriftMethod(value = "deleteImage" )
    public int deleteImage(String imageMd5,
        Token token) 
        throws ServiceRuntimeException{
        try{
            return delegate().deleteImage(imageMd5,
                TypeTransformer.getInstance().to(
                    token,
                    Token.class,
                    net.gdface.facelog.Token.class));
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#deletePermit(int,int,net.gdface.facelog.Token)}
     */
    @ThriftMethod(value = "deletePermitById" )
    public int deletePermitById(int deviceGroupId,
        int personGroupId,
        Token token) 
        throws ServiceRuntimeException{
        try{
            return delegate().deletePermit(deviceGroupId,
                personGroupId,
                TypeTransformer.getInstance().to(
                    token,
                    Token.class,
                    net.gdface.facelog.Token.class));
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#deletePermit(net.gdface.facelog.db.DeviceGroupBean,net.gdface.facelog.db.PersonGroupBean,net.gdface.facelog.Token)}
     */
    @ThriftMethod(value = "deletePermit" )
    public int deletePermit(DeviceGroupBean deviceGroup,
        PersonGroupBean personGroup,
        Token token) 
        throws ServiceRuntimeException{
        try{
            return delegate().deletePermit(TypeTransformer.getInstance().to(
                    deviceGroup,
                    DeviceGroupBean.class,
                    DeviceGroupBean.class),
                TypeTransformer.getInstance().to(
                    personGroup,
                    PersonGroupBean.class,
                    PersonGroupBean.class),
                TypeTransformer.getInstance().to(
                    token,
                    Token.class,
                    net.gdface.facelog.Token.class));
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#deletePerson(int,net.gdface.facelog.Token)}
     */
    @ThriftMethod(value = "deletePerson" )
    public int deletePerson(int personId,
        Token token) 
        throws ServiceRuntimeException{
        try{
            return delegate().deletePerson(personId,
                TypeTransformer.getInstance().to(
                    token,
                    Token.class,
                    net.gdface.facelog.Token.class));
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#deletePersonByPapersNum(java.lang.String,net.gdface.facelog.Token)}
     */
    @ThriftMethod(value = "deletePersonByPapersNum" )
    public int deletePersonByPapersNum(String papersNum,
        Token token) 
        throws ServiceRuntimeException{
        try{
            return delegate().deletePersonByPapersNum(papersNum,
                TypeTransformer.getInstance().to(
                    token,
                    Token.class,
                    net.gdface.facelog.Token.class));
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#deletePersonGroup(int,net.gdface.facelog.Token)}
     */
    @ThriftMethod(value = "deletePersonGroup" )
    public int deletePersonGroup(int personGroupId,
        Token token) 
        throws ServiceRuntimeException{
        try{
            return delegate().deletePersonGroup(personGroupId,
                TypeTransformer.getInstance().to(
                    token,
                    Token.class,
                    net.gdface.facelog.Token.class));
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#deletePersonGroupPermit(int,net.gdface.facelog.Token)}
     */
    @ThriftMethod(value = "deletePersonGroupPermit" )
    public int deletePersonGroupPermit(int personGroupId,
        Token token) 
        throws ServiceRuntimeException{
        try{
            return delegate().deletePersonGroupPermit(personGroupId,
                TypeTransformer.getInstance().to(
                    token,
                    Token.class,
                    net.gdface.facelog.Token.class));
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#deletePersons(java.util.List,net.gdface.facelog.Token)}
     */
    @ThriftMethod(value = "deletePersons" )
    public int deletePersons(List<Integer> personIdList,
        Token token) 
        throws ServiceRuntimeException{
        try{
            return delegate().deletePersons(TypeTransformer.getInstance().to(
                    personIdList,
                    Integer.class,
                    Integer.class),
                TypeTransformer.getInstance().to(
                    token,
                    Token.class,
                    net.gdface.facelog.Token.class));
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#deletePersonsByPapersNum(java.util.List,net.gdface.facelog.Token)}
     */
    @ThriftMethod(value = "deletePersonsByPapersNum" )
    public int deletePersonsByPapersNum(List<String> papersNumlist,
        Token token) 
        throws ServiceRuntimeException{
        try{
            return delegate().deletePersonsByPapersNum(TypeTransformer.getInstance().to(
                    papersNumlist,
                    String.class,
                    String.class),
                TypeTransformer.getInstance().to(
                    token,
                    Token.class,
                    net.gdface.facelog.Token.class));
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#disablePerson(int,java.lang.Integer,boolean,boolean,boolean,net.gdface.facelog.Token)}
     */
    @ThriftMethod(value = "disablePerson" )
    public void disablePerson(int personId,
        Integer moveToGroupId,
        boolean deletePhoto,
        boolean deleteFeature,
        boolean deleteLog,
        Token token) 
        throws ServiceRuntimeException{
        try{
             delegate().disablePerson(personId,
                moveToGroupId,
                deletePhoto,
                deleteFeature,
                deleteLog,
                TypeTransformer.getInstance().to(
                    token,
                    Token.class,
                    net.gdface.facelog.Token.class));
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#disablePerson(java.util.List,net.gdface.facelog.Token)}
     */
    @ThriftMethod(value = "disablePersonList" )
    public void disablePersonList(List<Integer> personIdList,
        Token token) 
        throws ServiceRuntimeException{
        try{
             delegate().disablePerson(TypeTransformer.getInstance().to(
                    personIdList,
                    Integer.class,
                    Integer.class),
                TypeTransformer.getInstance().to(
                    token,
                    Token.class,
                    net.gdface.facelog.Token.class));
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#existsDevice(int)}
     */
    @ThriftMethod(value = "existsDevice" )
    public boolean existsDevice(int id) 
        throws ServiceRuntimeException{
        try{
            return delegate().existsDevice(id);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#existsFeature(java.lang.String)}
     */
    @ThriftMethod(value = "existsFeature" )
    public boolean existsFeature(String md5) 
        throws ServiceRuntimeException{
        try{
            return delegate().existsFeature(md5);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#existsImage(java.lang.String)}
     */
    @ThriftMethod(value = "existsImage" )
    public boolean existsImage(String md5) 
        throws ServiceRuntimeException{
        try{
            return delegate().existsImage(md5);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#existsPerson(int)}
     */
    @ThriftMethod(value = "existsPerson" )
    public boolean existsPerson(int persionId) 
        throws ServiceRuntimeException{
        try{
            return delegate().existsPerson(persionId);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#getDevice(int)}
     */
    @ThriftMethod(value = "getDevice" )
    public DeviceBean getDevice(int deviceId) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().getDevice(deviceId),
                    DeviceBean.class,
                    DeviceBean.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#getDeviceGroup(int)}
     */
    @ThriftMethod(value = "getDeviceGroup" )
    public DeviceGroupBean getDeviceGroup(int deviceGroupId) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().getDeviceGroup(deviceGroupId),
                    DeviceGroupBean.class,
                    DeviceGroupBean.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#getDeviceGroups(java.util.List)}
     */
    @ThriftMethod(value = "getDeviceGroups" )
    public List<DeviceGroupBean> getDeviceGroups(List<Integer> groupIdList) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().getDeviceGroups(TypeTransformer.getInstance().to(
                    groupIdList,
                    Integer.class,
                    Integer.class)),
                    DeviceGroupBean.class,
                    DeviceGroupBean.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#getDeviceGroupsBelongs(int)}
     */
    @ThriftMethod(value = "getDeviceGroupsBelongs" )
    public List<Integer> getDeviceGroupsBelongs(int deviceId) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().getDeviceGroupsBelongs(deviceId),
                    Integer.class,
                    Integer.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#getDeviceGroupsPermit(int)}
     */
    @ThriftMethod(value = "getDeviceGroupsPermit" )
    public List<Integer> getDeviceGroupsPermit(int personGroupId) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().getDeviceGroupsPermit(personGroupId),
                    Integer.class,
                    Integer.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#getDeviceGroupsPermittedBy(int)}
     */
    @ThriftMethod(value = "getDeviceGroupsPermittedBy" )
    public List<Integer> getDeviceGroupsPermittedBy(int personGroupId) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().getDeviceGroupsPermittedBy(personGroupId),
                    Integer.class,
                    Integer.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#getDeviceIdOfFeature(java.lang.String)}
     */
    @ThriftMethod(value = "getDeviceIdOfFeature" )
    public Integer getDeviceIdOfFeature(String featureMd5) 
        throws ServiceRuntimeException{
        try{
            return delegate().getDeviceIdOfFeature(featureMd5);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#getDevices(java.util.List)}
     */
    @ThriftMethod(value = "getDevices" )
    public List<DeviceBean> getDevices(List<Integer> idList) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().getDevices(TypeTransformer.getInstance().to(
                    idList,
                    Integer.class,
                    Integer.class)),
                    DeviceBean.class,
                    DeviceBean.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#getDevicesOfGroup(int)}
     */
    @ThriftMethod(value = "getDevicesOfGroup" )
    public List<Integer> getDevicesOfGroup(int deviceGroupId) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().getDevicesOfGroup(deviceGroupId),
                    Integer.class,
                    Integer.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#getFace(int)}
     */
    @ThriftMethod(value = "getFace" )
    public FaceBean getFace(int faceId) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().getFace(faceId),
                    FaceBean.class,
                    FaceBean.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#getFeature(java.lang.String)}
     */
    @ThriftMethod(value = "getFeature" )
    public FeatureBean getFeature(String md5) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().getFeature(md5),
                    FeatureBean.class,
                    FeatureBean.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#getFeatureBytes(java.lang.String)}
     */
    @ThriftMethod(value = "getFeatureBytes" )
    public ByteBuffer getFeatureBytes(String md5) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().getFeatureBytes(md5),
                    byte[].class,
                    ByteBuffer.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#getFeatures(java.util.List)}
     */
    @ThriftMethod(value = "getFeatures" )
    public List<FeatureBean> getFeatures(List<String> md5) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().getFeatures(TypeTransformer.getInstance().to(
                    md5,
                    String.class,
                    String.class)),
                    FeatureBean.class,
                    FeatureBean.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#getFeaturesByPersonId(int)}
     */
    @ThriftMethod(value = "getFeaturesByPersonId" )
    public List<String> getFeaturesByPersonId(int personId) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().getFeaturesByPersonId(personId),
                    String.class,
                    String.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#getFeaturesByPersonIdAndSdkVersion(int,java.lang.String)}
     */
    @ThriftMethod(value = "getFeaturesByPersonIdAndSdkVersion" )
    public List<String> getFeaturesByPersonIdAndSdkVersion(int personId,
        String sdkVersion) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().getFeaturesByPersonIdAndSdkVersion(personId,
                sdkVersion),
                    String.class,
                    String.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#getFeaturesOfPerson(int)}
     */
    @ThriftMethod(value = "getFeaturesOfPerson" )
    public List<String> getFeaturesOfPerson(int personId) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().getFeaturesOfPerson(personId),
                    String.class,
                    String.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#getGroupPermit(int,int)}
     */
    @ThriftMethod(value = "getGroupPermit" )
    public PermitBean getGroupPermit(int deviceId,
        int personGroupId) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().getGroupPermit(deviceId,
                personGroupId),
                    PermitBean.class,
                    PermitBean.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#getGroupPermitOnDeviceGroup(int,int)}
     */
    @ThriftMethod(value = "getGroupPermitOnDeviceGroup" )
    public PermitBean getGroupPermitOnDeviceGroup(int deviceGroupId,
        int personGroupId) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().getGroupPermitOnDeviceGroup(deviceGroupId,
                personGroupId),
                    PermitBean.class,
                    PermitBean.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#getGroupPermits(int,java.util.List)}
     */
    @ThriftMethod(value = "getGroupPermits" )
    public List<PermitBean> getGroupPermits(int deviceId,
        List<Integer> personGroupIdList) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().getGroupPermits(deviceId,
                TypeTransformer.getInstance().to(
                    personGroupIdList,
                    Integer.class,
                    Integer.class)),
                    PermitBean.class,
                    PermitBean.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#getImage(java.lang.String)}
     */
    @ThriftMethod(value = "getImage" )
    public ImageBean getImage(String imageMD5) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().getImage(imageMD5),
                    ImageBean.class,
                    ImageBean.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#getImageBytes(java.lang.String)}
     */
    @ThriftMethod(value = "getImageBytes" )
    public ByteBuffer getImageBytes(String imageMD5) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().getImageBytes(imageMD5),
                    byte[].class,
                    ByteBuffer.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#getImagesAssociatedByFeature(java.lang.String)}
     */
    @ThriftMethod(value = "getImagesAssociatedByFeature" )
    public List<String> getImagesAssociatedByFeature(String featureMd5) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().getImagesAssociatedByFeature(featureMd5),
                    String.class,
                    String.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#getLogBeansByPersonId(int)}
     */
    @ThriftMethod(value = "getLogBeansByPersonId" )
    public List<LogBean> getLogBeansByPersonId(int personId) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().getLogBeansByPersonId(personId),
                    LogBean.class,
                    LogBean.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#getPerson(int)}
     */
    @ThriftMethod(value = "getPerson" )
    public PersonBean getPerson(int personId) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().getPerson(personId),
                    PersonBean.class,
                    PersonBean.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#getPersonByPapersNum(java.lang.String)}
     */
    @ThriftMethod(value = "getPersonByPapersNum" )
    public PersonBean getPersonByPapersNum(String papersNum) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().getPersonByPapersNum(papersNum),
                    PersonBean.class,
                    PersonBean.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#getPersonGroup(int)}
     */
    @ThriftMethod(value = "getPersonGroup" )
    public PersonGroupBean getPersonGroup(int personGroupId) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().getPersonGroup(personGroupId),
                    PersonGroupBean.class,
                    PersonGroupBean.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#getPersonGroups(java.util.List)}
     */
    @ThriftMethod(value = "getPersonGroups" )
    public List<PersonGroupBean> getPersonGroups(List<Integer> groupIdList) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().getPersonGroups(TypeTransformer.getInstance().to(
                    groupIdList,
                    Integer.class,
                    Integer.class)),
                    PersonGroupBean.class,
                    PersonGroupBean.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#getPersonGroupsBelongs(int)}
     */
    @ThriftMethod(value = "getPersonGroupsBelongs" )
    public List<Integer> getPersonGroupsBelongs(int personId) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().getPersonGroupsBelongs(personId),
                    Integer.class,
                    Integer.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#getPersonGroupsPermittedBy(int)}
     */
    @ThriftMethod(value = "getPersonGroupsPermittedBy" )
    public List<Integer> getPersonGroupsPermittedBy(int deviceGroupId) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().getPersonGroupsPermittedBy(deviceGroupId),
                    Integer.class,
                    Integer.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#getPersonPermit(int,int)}
     */
    @ThriftMethod(value = "getPersonPermit" )
    public PermitBean getPersonPermit(int deviceId,
        int personId) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().getPersonPermit(deviceId,
                personId),
                    PermitBean.class,
                    PermitBean.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#getPersonPermits(int,java.util.List)}
     */
    @ThriftMethod(value = "getPersonPermits" )
    public List<PermitBean> getPersonPermits(int deviceId,
        List<Integer> personIdList) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().getPersonPermits(deviceId,
                TypeTransformer.getInstance().to(
                    personIdList,
                    Integer.class,
                    Integer.class)),
                    PermitBean.class,
                    PermitBean.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#getPersons(java.util.List)}
     */
    @ThriftMethod(value = "getPersons" )
    public List<PersonBean> getPersons(List<Integer> idList) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().getPersons(TypeTransformer.getInstance().to(
                    idList,
                    Integer.class,
                    Integer.class)),
                    PersonBean.class,
                    PersonBean.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#getPersonsOfGroup(int)}
     */
    @ThriftMethod(value = "getPersonsOfGroup" )
    public List<Integer> getPersonsOfGroup(int personGroupId) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().getPersonsOfGroup(personGroupId),
                    Integer.class,
                    Integer.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#getProperty(java.lang.String,net.gdface.facelog.Token)}
     */
    @ThriftMethod(value = "getProperty" )
    public String getProperty(String key,
        Token token) 
        throws ServiceRuntimeException{
        try{
            return delegate().getProperty(key,
                TypeTransformer.getInstance().to(
                    token,
                    Token.class,
                    net.gdface.facelog.Token.class));
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#getRedisParameters(net.gdface.facelog.Token)}
     */
    @ThriftMethod(value = "getRedisParameters" )
    public Map<MQParam,String> getRedisParameters(Token token) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().getRedisParameters(TypeTransformer.getInstance().to(
                    token,
                    Token.class,
                    net.gdface.facelog.Token.class)),
                    MQParam.class,
                    String.class,
                    MQParam.class,
                    String.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#getServiceConfig(net.gdface.facelog.Token)}
     */
    @ThriftMethod(value = "getServiceConfig" )
    public Map<String,String> getServiceConfig(Token token) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().getServiceConfig(TypeTransformer.getInstance().to(
                    token,
                    Token.class,
                    net.gdface.facelog.Token.class)),
                    String.class,
                    String.class,
                    String.class,
                    String.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#getSubDeviceGroup(int)}
     */
    @ThriftMethod(value = "getSubDeviceGroup" )
    public List<Integer> getSubDeviceGroup(int deviceGroupId) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().getSubDeviceGroup(deviceGroupId),
                    Integer.class,
                    Integer.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#getSubPersonGroup(int)}
     */
    @ThriftMethod(value = "getSubPersonGroup" )
    public List<Integer> getSubPersonGroup(int personGroupId) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().getSubPersonGroup(personGroupId),
                    Integer.class,
                    Integer.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#isDisable(int)}
     */
    @ThriftMethod(value = "isDisable" )
    public boolean isDisable(int personId) 
        throws ServiceRuntimeException{
        try{
            return delegate().isDisable(personId);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#isLocal()}
     */
    @ThriftMethod(value = "isLocal" )
    public boolean isLocal() 
        throws ServiceRuntimeException{
        try{
            return delegate().isLocal();
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#isValidAckChannel(java.lang.String)}
     */
    @ThriftMethod(value = "isValidAckChannel" )
    public boolean isValidAckChannel(String ackChannel) 
        throws ServiceRuntimeException{
        try{
            return delegate().isValidAckChannel(ackChannel);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#isValidCmdSn(long)}
     */
    @ThriftMethod(value = "isValidCmdSn" )
    public boolean isValidCmdSn(long cmdSn) 
        throws ServiceRuntimeException{
        try{
            return delegate().isValidCmdSn(cmdSn);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#isValidDeviceToken(net.gdface.facelog.Token)}
     */
    @ThriftMethod(value = "isValidDeviceToken" )
    public boolean isValidDeviceToken(Token token) 
        throws ServiceRuntimeException{
        try{
            return delegate().isValidDeviceToken(TypeTransformer.getInstance().to(
                    token,
                    Token.class,
                    net.gdface.facelog.Token.class));
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#isValidPassword(java.lang.String,java.lang.String,boolean)}
     */
    @ThriftMethod(value = "isValidPassword" )
    public boolean isValidPassword(String userId,
        String password,
        boolean isMd5) 
        throws ServiceRuntimeException{
        try{
            return delegate().isValidPassword(userId,
                password,
                isMd5);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#isValidPersonToken(net.gdface.facelog.Token)}
     */
    @ThriftMethod(value = "isValidPersonToken" )
    public boolean isValidPersonToken(Token token) 
        throws ServiceRuntimeException{
        try{
            return delegate().isValidPersonToken(TypeTransformer.getInstance().to(
                    token,
                    Token.class,
                    net.gdface.facelog.Token.class));
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#isValidRootToken(net.gdface.facelog.Token)}
     */
    @ThriftMethod(value = "isValidRootToken" )
    public boolean isValidRootToken(Token token) 
        throws ServiceRuntimeException{
        try{
            return delegate().isValidRootToken(TypeTransformer.getInstance().to(
                    token,
                    Token.class,
                    net.gdface.facelog.Token.class));
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#isValidToken(net.gdface.facelog.Token)}
     */
    @ThriftMethod(value = "isValidToken" )
    public boolean isValidToken(Token token) 
        throws ServiceRuntimeException{
        try{
            return delegate().isValidToken(TypeTransformer.getInstance().to(
                    token,
                    Token.class,
                    net.gdface.facelog.Token.class));
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#isValidUserToken(net.gdface.facelog.Token)}
     */
    @ThriftMethod(value = "isValidUserToken" )
    public boolean isValidUserToken(Token token) 
        throws ServiceRuntimeException{
        try{
            return delegate().isValidUserToken(TypeTransformer.getInstance().to(
                    token,
                    Token.class,
                    net.gdface.facelog.Token.class));
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#listOfParentForDeviceGroup(int)}
     */
    @ThriftMethod(value = "listOfParentForDeviceGroup" )
    public List<Integer> listOfParentForDeviceGroup(int deviceGroupId) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().listOfParentForDeviceGroup(deviceGroupId),
                    Integer.class,
                    Integer.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#listOfParentForPersonGroup(int)}
     */
    @ThriftMethod(value = "listOfParentForPersonGroup" )
    public List<Integer> listOfParentForPersonGroup(int personGroupId) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().listOfParentForPersonGroup(personGroupId),
                    Integer.class,
                    Integer.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#loadAllPerson()}
     */
    @ThriftMethod(value = "loadAllPerson" )
    public List<Integer> loadAllPerson() 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().loadAllPerson(),
                    Integer.class,
                    Integer.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#loadDeviceByWhere(java.lang.String,int,int)}
     */
    @ThriftMethod(value = "loadDeviceByWhere" )
    public List<DeviceBean> loadDeviceByWhere(String where,
        int startRow,
        int numRows) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().loadDeviceByWhere(where,
                startRow,
                numRows),
                    DeviceBean.class,
                    DeviceBean.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#loadDeviceGroupByWhere(java.lang.String,int,int)}
     */
    @ThriftMethod(value = "loadDeviceGroupByWhere" )
    public List<Integer> loadDeviceGroupByWhere(String where,
        int startRow,
        int numRows) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().loadDeviceGroupByWhere(where,
                startRow,
                numRows),
                    Integer.class,
                    Integer.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#loadDeviceGroupIdByWhere(java.lang.String)}
     */
    @ThriftMethod(value = "loadDeviceGroupIdByWhere" )
    public List<Integer> loadDeviceGroupIdByWhere(String where) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().loadDeviceGroupIdByWhere(where),
                    Integer.class,
                    Integer.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#loadDeviceIdByWhere(java.lang.String)}
     */
    @ThriftMethod(value = "loadDeviceIdByWhere" )
    public List<Integer> loadDeviceIdByWhere(String where) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().loadDeviceIdByWhere(where),
                    Integer.class,
                    Integer.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#loadFeatureMd5ByUpdate(java.lang.String)}
     */
    @ThriftMethod(value = "loadFeatureMd5ByUpdateTimeStr" )
    public List<String> loadFeatureMd5ByUpdateTimeStr(String timestamp) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().loadFeatureMd5ByUpdate(timestamp),
                    String.class,
                    String.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#loadFeatureMd5ByUpdate(long)}
     */
    @ThriftMethod(value = "loadFeatureMd5ByUpdate" )
    public List<String> loadFeatureMd5ByUpdate(long timestamp) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().loadFeatureMd5ByUpdate(timestamp),
                    String.class,
                    String.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#loadLogByWhere(java.lang.String,int,int)}
     */
    @ThriftMethod(value = "loadLogByWhere" )
    public List<LogBean> loadLogByWhere(String where,
        int startRow,
        int numRows) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().loadLogByWhere(where,
                startRow,
                numRows),
                    LogBean.class,
                    LogBean.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#loadLogLightByVerifyTime(java.lang.String,int,int)}
     */
    @ThriftMethod(value = "loadLogLightByVerifyTimeTimestr" )
    public List<LogLightBean> loadLogLightByVerifyTimeTimestr(String timestamp,
        int startRow,
        int numRows) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().loadLogLightByVerifyTime(timestamp,
                startRow,
                numRows),
                    LogLightBean.class,
                    LogLightBean.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#loadLogLightByVerifyTime(long,int,int)}
     */
    @ThriftMethod(value = "loadLogLightByVerifyTime" )
    public List<LogLightBean> loadLogLightByVerifyTime(long timestamp,
        int startRow,
        int numRows) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().loadLogLightByVerifyTime(timestamp,
                startRow,
                numRows),
                    LogLightBean.class,
                    LogLightBean.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#loadLogLightByWhere(java.lang.String,int,int)}
     */
    @ThriftMethod(value = "loadLogLightByWhere" )
    public List<LogLightBean> loadLogLightByWhere(String where,
        int startRow,
        int numRows) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().loadLogLightByWhere(where,
                startRow,
                numRows),
                    LogLightBean.class,
                    LogLightBean.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#loadPermitByUpdate(java.lang.String)}
     */
    @ThriftMethod(value = "loadPermitByUpdateTimestr" )
    public List<PermitBean> loadPermitByUpdateTimestr(String timestamp) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().loadPermitByUpdate(timestamp),
                    PermitBean.class,
                    PermitBean.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#loadPermitByUpdate(long)}
     */
    @ThriftMethod(value = "loadPermitByUpdate" )
    public List<PermitBean> loadPermitByUpdate(long timestamp) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().loadPermitByUpdate(timestamp),
                    PermitBean.class,
                    PermitBean.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#loadPersonByWhere(java.lang.String,int,int)}
     */
    @ThriftMethod(value = "loadPersonByWhere" )
    public List<PersonBean> loadPersonByWhere(String where,
        int startRow,
        int numRows) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().loadPersonByWhere(where,
                startRow,
                numRows),
                    PersonBean.class,
                    PersonBean.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#loadPersonGroupByWhere(java.lang.String,int,int)}
     */
    @ThriftMethod(value = "loadPersonGroupByWhere" )
    public List<Integer> loadPersonGroupByWhere(String where,
        int startRow,
        int numRows) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().loadPersonGroupByWhere(where,
                startRow,
                numRows),
                    Integer.class,
                    Integer.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#loadPersonGroupIdByWhere(java.lang.String)}
     */
    @ThriftMethod(value = "loadPersonGroupIdByWhere" )
    public List<Integer> loadPersonGroupIdByWhere(String where) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().loadPersonGroupIdByWhere(where),
                    Integer.class,
                    Integer.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#loadPersonIdByUpdateTime(java.lang.String)}
     */
    @ThriftMethod(value = "loadPersonIdByUpdateTimeTimeStr" )
    public List<Integer> loadPersonIdByUpdateTimeTimeStr(String timestamp) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().loadPersonIdByUpdateTime(timestamp),
                    Integer.class,
                    Integer.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#loadPersonIdByUpdateTime(long)}
     */
    @ThriftMethod(value = "loadPersonIdByUpdateTime" )
    public List<Integer> loadPersonIdByUpdateTime(long timestamp) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().loadPersonIdByUpdateTime(timestamp),
                    Integer.class,
                    Integer.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#loadPersonIdByWhere(java.lang.String)}
     */
    @ThriftMethod(value = "loadPersonIdByWhere" )
    public List<Integer> loadPersonIdByWhere(String where) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().loadPersonIdByWhere(where),
                    Integer.class,
                    Integer.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#loadUpdatedPersons(java.lang.String)}
     */
    @ThriftMethod(value = "loadUpdatedPersonsTimestr" )
    public List<Integer> loadUpdatedPersonsTimestr(String timestamp) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().loadUpdatedPersons(timestamp),
                    Integer.class,
                    Integer.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#loadUpdatedPersons(long)}
     */
    @ThriftMethod(value = "loadUpdatedPersons" )
    public List<Integer> loadUpdatedPersons(long timestamp) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().loadUpdatedPersons(timestamp),
                    Integer.class,
                    Integer.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#offline(net.gdface.facelog.Token)}
     */
    @ThriftMethod(value = "offline" ,exception = {
                @ThriftException(type=ServiceSecurityException.class, id=1),
                @ThriftException(type=ServiceRuntimeException.class, id=2)
                })
    public void offline(Token token) 
        throws ServiceSecurityException,ServiceRuntimeException{
        try{
             delegate().offline(TypeTransformer.getInstance().to(
                    token,
                    Token.class,
                    net.gdface.facelog.Token.class));
        }
        catch(net.gdface.facelog.ServiceSecurityException e){
            throw new ServiceSecurityException(e);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#online(net.gdface.facelog.db.DeviceBean)}
     */
    @ThriftMethod(value = "online" ,exception = {
                @ThriftException(type=ServiceSecurityException.class, id=1),
                @ThriftException(type=ServiceRuntimeException.class, id=2)
                })
    public Token online(DeviceBean device) 
        throws ServiceSecurityException,ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().online(TypeTransformer.getInstance().to(
                    device,
                    DeviceBean.class,
                    DeviceBean.class)),
                    net.gdface.facelog.Token.class,
                    Token.class);
        }
        catch(net.gdface.facelog.ServiceSecurityException e){
            throw new ServiceSecurityException(e);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#registerDevice(net.gdface.facelog.db.DeviceBean)}
     */
    @ThriftMethod(value = "registerDevice" ,exception = {
                @ThriftException(type=ServiceSecurityException.class, id=1),
                @ThriftException(type=ServiceRuntimeException.class, id=2)
                })
    public DeviceBean registerDevice(DeviceBean newDevice) 
        throws ServiceSecurityException,ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().registerDevice(TypeTransformer.getInstance().to(
                    newDevice,
                    DeviceBean.class,
                    DeviceBean.class)),
                    DeviceBean.class,
                    DeviceBean.class);
        }
        catch(net.gdface.facelog.ServiceSecurityException e){
            throw new ServiceSecurityException(e);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#releasePersonToken(net.gdface.facelog.Token)}
     */
    @ThriftMethod(value = "releasePersonToken" ,exception = {
                @ThriftException(type=ServiceSecurityException.class, id=1),
                @ThriftException(type=ServiceRuntimeException.class, id=2)
                })
    public void releasePersonToken(Token token) 
        throws ServiceSecurityException,ServiceRuntimeException{
        try{
             delegate().releasePersonToken(TypeTransformer.getInstance().to(
                    token,
                    Token.class,
                    net.gdface.facelog.Token.class));
        }
        catch(net.gdface.facelog.ServiceSecurityException e){
            throw new ServiceSecurityException(e);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#releaseRootToken(net.gdface.facelog.Token)}
     */
    @ThriftMethod(value = "releaseRootToken" ,exception = {
                @ThriftException(type=ServiceSecurityException.class, id=1),
                @ThriftException(type=ServiceRuntimeException.class, id=2)
                })
    public void releaseRootToken(Token token) 
        throws ServiceSecurityException,ServiceRuntimeException{
        try{
             delegate().releaseRootToken(TypeTransformer.getInstance().to(
                    token,
                    Token.class,
                    net.gdface.facelog.Token.class));
        }
        catch(net.gdface.facelog.ServiceSecurityException e){
            throw new ServiceSecurityException(e);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#releaseUserToken(net.gdface.facelog.Token)}
     */
    @ThriftMethod(value = "releaseUserToken" ,exception = {
                @ThriftException(type=ServiceSecurityException.class, id=1),
                @ThriftException(type=ServiceRuntimeException.class, id=2)
                })
    public void releaseUserToken(Token token) 
        throws ServiceSecurityException,ServiceRuntimeException{
        try{
             delegate().releaseUserToken(TypeTransformer.getInstance().to(
                    token,
                    Token.class,
                    net.gdface.facelog.Token.class));
        }
        catch(net.gdface.facelog.ServiceSecurityException e){
            throw new ServiceSecurityException(e);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#replaceFeature(java.lang.Integer,java.lang.String,boolean,net.gdface.facelog.Token)}
     */
    @ThriftMethod(value = "replaceFeature" )
    public void replaceFeature(Integer personId,
        String featureMd5,
        boolean deleteOldFeatureImage,
        Token token) 
        throws ServiceRuntimeException{
        try{
             delegate().replaceFeature(personId,
                featureMd5,
                deleteOldFeatureImage,
                TypeTransformer.getInstance().to(
                    token,
                    Token.class,
                    net.gdface.facelog.Token.class));
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#rootGroupOfDevice(java.lang.Integer)}
     */
    @ThriftMethod(value = "rootGroupOfDevice" )
    public Integer rootGroupOfDevice(Integer deviceId) 
        throws ServiceRuntimeException{
        try{
            return delegate().rootGroupOfDevice(deviceId);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#rootGroupOfPerson(java.lang.Integer)}
     */
    @ThriftMethod(value = "rootGroupOfPerson" )
    public Integer rootGroupOfPerson(Integer personId) 
        throws ServiceRuntimeException{
        try{
            return delegate().rootGroupOfPerson(personId);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#saveDevice(net.gdface.facelog.db.DeviceBean,net.gdface.facelog.Token)}
     */
    @ThriftMethod(value = "saveDevice" )
    public DeviceBean saveDevice(DeviceBean deviceBean,
        Token token) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().saveDevice(TypeTransformer.getInstance().to(
                    deviceBean,
                    DeviceBean.class,
                    DeviceBean.class),
                TypeTransformer.getInstance().to(
                    token,
                    Token.class,
                    net.gdface.facelog.Token.class)),
                    DeviceBean.class,
                    DeviceBean.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#saveDeviceGroup(net.gdface.facelog.db.DeviceGroupBean,net.gdface.facelog.Token)}
     */
    @ThriftMethod(value = "saveDeviceGroup" )
    public DeviceGroupBean saveDeviceGroup(DeviceGroupBean deviceGroupBean,
        Token token) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().saveDeviceGroup(TypeTransformer.getInstance().to(
                    deviceGroupBean,
                    DeviceGroupBean.class,
                    DeviceGroupBean.class),
                TypeTransformer.getInstance().to(
                    token,
                    Token.class,
                    net.gdface.facelog.Token.class)),
                    DeviceGroupBean.class,
                    DeviceGroupBean.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#savePerson(net.gdface.facelog.db.PersonBean,byte[],byte[],java.lang.String,byte[],net.gdface.facelog.db.FaceBean,net.gdface.facelog.Token)}
     */
    @ThriftMethod(value = "savePersonFull" )
    public PersonBean savePersonFull(PersonBean personBean,
        ByteBuffer idPhoto,
        ByteBuffer feature,
        String featureVersion,
        ByteBuffer featureImage,
        FaceBean featureFaceBean,
        Token token) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().savePerson(TypeTransformer.getInstance().to(
                    personBean,
                    PersonBean.class,
                    PersonBean.class),
                TypeTransformer.getInstance().to(
                    idPhoto,
                    ByteBuffer.class,
                    byte[].class),
                TypeTransformer.getInstance().to(
                    feature,
                    ByteBuffer.class,
                    byte[].class),
                featureVersion,
                TypeTransformer.getInstance().to(
                    featureImage,
                    ByteBuffer.class,
                    byte[].class),
                TypeTransformer.getInstance().to(
                    featureFaceBean,
                    FaceBean.class,
                    FaceBean.class),
                TypeTransformer.getInstance().to(
                    token,
                    Token.class,
                    net.gdface.facelog.Token.class)),
                    PersonBean.class,
                    PersonBean.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#savePerson(net.gdface.facelog.db.PersonBean,byte[],byte[],java.lang.String,java.util.List,net.gdface.facelog.Token)}
     */
    @ThriftMethod(value = "savePersonWithPhotoAndFeatureMultiFaces" )
    public PersonBean savePersonWithPhotoAndFeatureMultiFaces(PersonBean personBean,
        ByteBuffer idPhoto,
        ByteBuffer feature,
        String featureVersion,
        List<FaceBean> faceBeans,
        Token token) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().savePerson(TypeTransformer.getInstance().to(
                    personBean,
                    PersonBean.class,
                    PersonBean.class),
                TypeTransformer.getInstance().to(
                    idPhoto,
                    ByteBuffer.class,
                    byte[].class),
                TypeTransformer.getInstance().to(
                    feature,
                    ByteBuffer.class,
                    byte[].class),
                featureVersion,
                TypeTransformer.getInstance().to(
                    faceBeans,
                    FaceBean.class,
                    FaceBean.class),
                TypeTransformer.getInstance().to(
                    token,
                    Token.class,
                    net.gdface.facelog.Token.class)),
                    PersonBean.class,
                    PersonBean.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#savePerson(net.gdface.facelog.db.PersonBean,byte[],byte[],java.lang.String,java.util.Map,net.gdface.facelog.Token)}
     */
    @ThriftMethod(value = "savePersonWithPhotoAndFeatureMultiImage" )
    public PersonBean savePersonWithPhotoAndFeatureMultiImage(PersonBean personBean,
        ByteBuffer idPhoto,
        ByteBuffer feature,
        String featureVersion,
        Map<ByteBuffer,FaceBean> faceInfo,
        Token token) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().savePerson(TypeTransformer.getInstance().to(
                    personBean,
                    PersonBean.class,
                    PersonBean.class),
                TypeTransformer.getInstance().to(
                    idPhoto,
                    ByteBuffer.class,
                    byte[].class),
                TypeTransformer.getInstance().to(
                    feature,
                    ByteBuffer.class,
                    byte[].class),
                featureVersion,
                TypeTransformer.getInstance().to(
                    faceInfo,
                    ByteBuffer.class,
                    FaceBean.class,
                    ByteBuffer.class,
                    FaceBean.class),
                TypeTransformer.getInstance().to(
                    token,
                    Token.class,
                    net.gdface.facelog.Token.class)),
                    PersonBean.class,
                    PersonBean.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#savePerson(net.gdface.facelog.db.PersonBean,byte[],net.gdface.facelog.Token)}
     */
    @ThriftMethod(value = "savePersonWithPhoto" )
    public PersonBean savePersonWithPhoto(PersonBean personBean,
        ByteBuffer idPhoto,
        Token token) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().savePerson(TypeTransformer.getInstance().to(
                    personBean,
                    PersonBean.class,
                    PersonBean.class),
                TypeTransformer.getInstance().to(
                    idPhoto,
                    ByteBuffer.class,
                    byte[].class),
                TypeTransformer.getInstance().to(
                    token,
                    Token.class,
                    net.gdface.facelog.Token.class)),
                    PersonBean.class,
                    PersonBean.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#savePerson(net.gdface.facelog.db.PersonBean,byte[],net.gdface.facelog.db.FeatureBean,net.gdface.facelog.Token)}
     */
    @ThriftMethod(value = "savePersonWithPhotoAndFeature" )
    public PersonBean savePersonWithPhotoAndFeature(PersonBean personBean,
        ByteBuffer idPhoto,
        FeatureBean featureBean,
        Token token) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().savePerson(TypeTransformer.getInstance().to(
                    personBean,
                    PersonBean.class,
                    PersonBean.class),
                TypeTransformer.getInstance().to(
                    idPhoto,
                    ByteBuffer.class,
                    byte[].class),
                TypeTransformer.getInstance().to(
                    featureBean,
                    FeatureBean.class,
                    FeatureBean.class),
                TypeTransformer.getInstance().to(
                    token,
                    Token.class,
                    net.gdface.facelog.Token.class)),
                    PersonBean.class,
                    PersonBean.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#savePerson(net.gdface.facelog.db.PersonBean,java.lang.String,java.lang.String,net.gdface.facelog.Token)}
     */
    @ThriftMethod(value = "savePersonWithPhotoAndFeatureSaved" )
    public PersonBean savePersonWithPhotoAndFeatureSaved(PersonBean personBean,
        String idPhotoMd5,
        String featureMd5,
        Token token) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().savePerson(TypeTransformer.getInstance().to(
                    personBean,
                    PersonBean.class,
                    PersonBean.class),
                idPhotoMd5,
                featureMd5,
                TypeTransformer.getInstance().to(
                    token,
                    Token.class,
                    net.gdface.facelog.Token.class)),
                    PersonBean.class,
                    PersonBean.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#savePerson(net.gdface.facelog.db.PersonBean,net.gdface.facelog.Token)}
     */
    @ThriftMethod(value = "savePerson" )
    public PersonBean savePerson(PersonBean personBean,
        Token token) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().savePerson(TypeTransformer.getInstance().to(
                    personBean,
                    PersonBean.class,
                    PersonBean.class),
                TypeTransformer.getInstance().to(
                    token,
                    Token.class,
                    net.gdface.facelog.Token.class)),
                    PersonBean.class,
                    PersonBean.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#savePersonGroup(net.gdface.facelog.db.PersonGroupBean,net.gdface.facelog.Token)}
     */
    @ThriftMethod(value = "savePersonGroup" )
    public PersonGroupBean savePersonGroup(PersonGroupBean personGroupBean,
        Token token) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().savePersonGroup(TypeTransformer.getInstance().to(
                    personGroupBean,
                    PersonGroupBean.class,
                    PersonGroupBean.class),
                TypeTransformer.getInstance().to(
                    token,
                    Token.class,
                    net.gdface.facelog.Token.class)),
                    PersonGroupBean.class,
                    PersonGroupBean.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#savePersons(java.util.List,net.gdface.facelog.Token)}
     */
    @ThriftMethod(value = "savePersons" )
    public void savePersons(List<PersonBean> persons,
        Token token) 
        throws ServiceRuntimeException{
        try{
             delegate().savePersons(TypeTransformer.getInstance().to(
                    persons,
                    PersonBean.class,
                    PersonBean.class),
                TypeTransformer.getInstance().to(
                    token,
                    Token.class,
                    net.gdface.facelog.Token.class));
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#savePersons(java.util.Map,net.gdface.facelog.Token)}
     */
    @ThriftMethod(value = "savePersonsWithPhoto" )
    public int savePersonsWithPhoto(Map<ByteBuffer,PersonBean> persons,
        Token token) 
        throws ServiceRuntimeException{
        try{
            return delegate().savePersons(TypeTransformer.getInstance().to(
                    persons,
                    ByteBuffer.class,
                    PersonBean.class,
                    ByteBuffer.class,
                    PersonBean.class),
                TypeTransformer.getInstance().to(
                    token,
                    Token.class,
                    net.gdface.facelog.Token.class));
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#saveServiceConfig(net.gdface.facelog.Token)}
     */
    @ThriftMethod(value = "saveServiceConfig" )
    public void saveServiceConfig(Token token) 
        throws ServiceRuntimeException{
        try{
             delegate().saveServiceConfig(TypeTransformer.getInstance().to(
                    token,
                    Token.class,
                    net.gdface.facelog.Token.class));
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#setPersonExpiryDate(int,java.lang.String,net.gdface.facelog.Token)}
     */
    @ThriftMethod(value = "setPersonExpiryDateTimeStr" )
    public void setPersonExpiryDateTimeStr(int personId,
        String expiryDate,
        Token token) 
        throws ServiceRuntimeException{
        try{
             delegate().setPersonExpiryDate(personId,
                expiryDate,
                TypeTransformer.getInstance().to(
                    token,
                    Token.class,
                    net.gdface.facelog.Token.class));
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#setPersonExpiryDate(int,long,net.gdface.facelog.Token)}
     */
    @ThriftMethod(value = "setPersonExpiryDate" )
    public void setPersonExpiryDate(int personId,
        long expiryDate,
        Token token) 
        throws ServiceRuntimeException{
        try{
             delegate().setPersonExpiryDate(personId,
                expiryDate,
                TypeTransformer.getInstance().to(
                    token,
                    Token.class,
                    net.gdface.facelog.Token.class));
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#setPersonExpiryDate(java.util.List,long,net.gdface.facelog.Token)}
     */
    @ThriftMethod(value = "setPersonExpiryDateList" )
    public void setPersonExpiryDateList(List<Integer> personIdList,
        long expiryDate,
        Token token) 
        throws ServiceRuntimeException{
        try{
             delegate().setPersonExpiryDate(TypeTransformer.getInstance().to(
                    personIdList,
                    Integer.class,
                    Integer.class),
                expiryDate,
                TypeTransformer.getInstance().to(
                    token,
                    Token.class,
                    net.gdface.facelog.Token.class));
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#setProperties(java.util.Map,net.gdface.facelog.Token)}
     */
    @ThriftMethod(value = "setProperties" )
    public void setProperties(Map<String,String> config,
        Token token) 
        throws ServiceRuntimeException{
        try{
             delegate().setProperties(TypeTransformer.getInstance().to(
                    config,
                    String.class,
                    String.class,
                    String.class,
                    String.class),
                TypeTransformer.getInstance().to(
                    token,
                    Token.class,
                    net.gdface.facelog.Token.class));
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#setProperty(java.lang.String,java.lang.String,net.gdface.facelog.Token)}
     */
    @ThriftMethod(value = "setProperty" )
    public void setProperty(String key,
        String value,
        Token token) 
        throws ServiceRuntimeException{
        try{
             delegate().setProperty(key,
                value,
                TypeTransformer.getInstance().to(
                    token,
                    Token.class,
                    net.gdface.facelog.Token.class));
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#taskQueueOf(java.lang.String,net.gdface.facelog.Token)}
     */
    @ThriftMethod(value = "taskQueueOf" )
    public String taskQueueOf(String task,
        Token token) 
        throws ServiceRuntimeException{
        try{
            return delegate().taskQueueOf(task,
                TypeTransformer.getInstance().to(
                    token,
                    Token.class,
                    net.gdface.facelog.Token.class));
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#taskRegister(java.lang.String,net.gdface.facelog.Token)}
     */
    @ThriftMethod(value = "taskRegister" )
    public String taskRegister(String task,
        Token token) 
        throws ServiceRuntimeException{
        try{
            return delegate().taskRegister(task,
                TypeTransformer.getInstance().to(
                    token,
                    Token.class,
                    net.gdface.facelog.Token.class));
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#unbindBorder(java.lang.Integer,java.lang.Integer,net.gdface.facelog.Token)}
     */
    @ThriftMethod(value = "unbindBorder" )
    public void unbindBorder(Integer personGroupId,
        Integer deviceGroupId,
        Token token) 
        throws ServiceRuntimeException{
        try{
             delegate().unbindBorder(personGroupId,
                deviceGroupId,
                TypeTransformer.getInstance().to(
                    token,
                    Token.class,
                    net.gdface.facelog.Token.class));
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#unregisterDevice(net.gdface.facelog.Token)}
     */
    @ThriftMethod(value = "unregisterDevice" ,exception = {
                @ThriftException(type=ServiceSecurityException.class, id=1),
                @ThriftException(type=ServiceRuntimeException.class, id=2)
                })
    public void unregisterDevice(Token token) 
        throws ServiceSecurityException,ServiceRuntimeException{
        try{
             delegate().unregisterDevice(TypeTransformer.getInstance().to(
                    token,
                    Token.class,
                    net.gdface.facelog.Token.class));
        }
        catch(net.gdface.facelog.ServiceSecurityException e){
            throw new ServiceSecurityException(e);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#updateDevice(net.gdface.facelog.db.DeviceBean,net.gdface.facelog.Token)}
     */
    @ThriftMethod(value = "updateDevice" )
    public DeviceBean updateDevice(DeviceBean deviceBean,
        Token token) 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().updateDevice(TypeTransformer.getInstance().to(
                    deviceBean,
                    DeviceBean.class,
                    DeviceBean.class),
                TypeTransformer.getInstance().to(
                    token,
                    Token.class,
                    net.gdface.facelog.Token.class)),
                    DeviceBean.class,
                    DeviceBean.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#version()}
     */
    @ThriftMethod(value = "version" )
    public String version() 
        throws ServiceRuntimeException{
        try{
            return delegate().version();
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
    /**
     * @see {@link net.gdface.facelog.IFaceLog#versionInfo()}
     */
    @ThriftMethod(value = "versionInfo" )
    public Map<String,String> versionInfo() 
        throws ServiceRuntimeException{
        try{
            return TypeTransformer.getInstance().to(
                    delegate().versionInfo(),
                    String.class,
                    String.class,
                    String.class,
                    String.class);
        }
        catch(ServiceRuntimeException e){
            throw e;
        }
        catch(RuntimeException e){
            throw new ServiceRuntimeException(e);
        }
    }
}